package com.cskaoyan.javase.array._5operation._1get;

/**
 * 获取数组中的最值，包括获取最大值和最小值，也是常见操作。
 * 具体思路：
 *      1.任取一个元素（一般选择第一个元素）作为参照物。
 *      2.遍历其他元素，依次比较，选择出更大/小的值，类似于打擂台。
 *      3.最终获取最值。
 *
 * @since 15:57
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {

        int[] arr = {12, -32, 4, 324, 23, 4, 32, 4, 324, 23, 4, 32, 4, 233333, 423, 4, 32, 4, 234, 234, 233};
        System.out.println(getMaxValueByIntArr(arr));

        System.out.println(getMinValueByIntArr(arr));
    }

    // 求数组中元素的最大值,比如一个int数组
    public static int getMaxValueByIntArr(int[] arr) {
        // 1.假设第一个元素是最大值
        int max = arr[0];
        // 2.遍历数组,逐一比较,找出最大值,这里遍历数组,增强for,普通for皆可
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > max) {
                // 成为新的最大值
                max = arr[i];
            }
        }
        // 遍历完整个数组,max必然是最大值
        return max;
    }


    // 求数组中元素的最小值,比如一个int数组
    public static int getMinValueByIntArr(int[] arr) {
        // 1.假设第一个元素是最小值
        int min = arr[0];
        // 2.遍历数组,逐一比较,找出最大值,这里遍历数组,增强for,普通for皆可
        for (int element : arr) {
            if (element < min) {
                // 成为新的最小值
                min = element;
            }
        }
        // 遍历完整个数组,min必然是最小值
        return min;
    }
}
